package com.nfl.views;

import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Movie;
import android.util.AttributeSet;
import android.view.View;

import com.nfl.activity.R;

/**
 * 利用ImageView或ProgressBar实现gif
 * 
 * @author nfl
 * @date 2015年11月2日
 */
public class MyGifViewSimple extends View {
	private long movieStart;
	private Movie movie;

	// 此处必须重写该构造方法
	public MyGifViewSimple(Context context, AttributeSet attributeSet) {
		super(context, attributeSet);
		// 以文件流（InputStream）读取进gif图片资源
		movie = Movie.decodeStream(getResources().openRawResource(R.raw.gif));
	}

	@Override
	protected void onDraw(Canvas canvas) {
		long curTime = android.os.SystemClock.uptimeMillis();
		// 第一次播放
		if (movieStart == 0) {
			movieStart = curTime;
		}
		if (movie != null) {
			int duraction = movie.duration();
			int relTime = (int) ((curTime - movieStart) % duraction);
			movie.setTime(relTime);
			movie.draw(canvas, 0, 0);
			// 强制重绘
			invalidate();
		}
		super.onDraw(canvas);
	}
}